﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CruzDelSur.Dominio;
using NHibernate;
using NHibernate.Criterion;

namespace CruzDelSur.Persistencia
{
    public class ServicioDAO : BaseDAO<Servicio, string>, IServicioDAO
    {
        public ICollection<Servicio> ListarServicios()
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<Servicio> resultado = sesion
                    .CreateQuery("from Servicio where Estado = :estado order by FechaCreacion asc")
                    .SetParameter("estado", "A")
                    .List<Servicio>();
                return resultado;
            }
        }
        public ICollection<Servicio> ListarServiciosEspeciales()
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<Servicio> resultado = sesion
                    .CreateSQLQuery(
                    "SELECT DISTINCT s.codServicio as Codigo, s.desServicio as Descripcion " +
                    " FROM SE_TB_Servicio s" +
                    " inner  join SE_TB_Servicio_Tramo t ON s.codServicio = t.codServicio" +
                    " WHERE estServicio = :estado AND t.flaServicioTramo = :flg")
                    .SetParameter("estado", "A")
                    .SetParameter("flg", true)
                    .SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Servicio)))
                    .List<Servicio>();
                return resultado;
            }
        }
        
        public ICollection<Servicio> obtenerListadoPendientes()
        {
            ICollection<Servicio> resultado = this.Listar(
                DetachedCriteria.For<Servicio>().Add(
                    Restrictions.Eq("Estado", Servicio.PENDIENTE)
                   )
                );
            return resultado;
        }
    }
}